<?php
/**
 * 
 * INDICADORES G VENTAS 24-H
 * @author Algenis Volquez
 *
 */
class IndicadoresGVentas24H extends Controller
{

	private $_companias;
	private $_recomendacionBalance;
	private $_semanaActual;
	private $_semanaArray;
	private $_detalles = array();
	private $_porcentajeArray = array();
	private $_companiasExpress = array();
	const LIMITE_COMPANIAS_CARPETA = 28;
	const SEMANAS_OBMITIDAS = 4;
	
	public function __construct()
	{
		parent::Controller();
		
		$this->load->library(array('chgraficos', 'chcalendario'));
		$this->load->model(array('mcompania', 'mprocesos', 'metapas', 'mservicios', 'usuarios', 'mestatus',
								'mresponsable', 'mmodeloetapas', 'mmodeloservicios', 'mcompaniacarpetas', 
								'companiashistoricaactivasmodel'));
		
		$this->_semanaActual = $this->input->post('cantSemana') ? $this->input->post('cantSemana') : 9;
		$this->session->set_userdata('semanaActual', $this->_semanaActual);
		
		$this->_semanaArray = $this->chcalendario->semana($this->_semanaActual);
	}
	
	public function index()
	{
		$this->load->view('second', array('content_page'					=> 'indicadoresgventas24h_view',
										  'menutop'							=>	0,
										  'semanaFiltro'					=> 	9,
										  'balanceCompaniasExpress'			=> 	$this->getBalanceCompaniasExpress(),
										  'recomendacionBalance'			=>	$this->_recomendacionBalance,
										  'efectividadExpressEntreCantidad'	=>	$this->getEfectividadExpressEntreCantidad(),
										  'detallesExpress'					=>	$this->_detalles,
										  'promedioUltimasSemanas'			=>	$this->getPromedioUltimasSemanas(),
										  'companiasPorEstatus'				=>	$this->getCompaniasPorEstatus(),
										  'expressCreadasVsVendidas'		=>	$this->getExpressCreadasVsVendidas(),
										  'promedioDiasExpress'				=>	$this->getPromedioDiasExpress()));
	}
	 
	public function detalleIndicadoresVenta()
	{
		  $typeServicio = ($this->input->post('type') == 'registradas')?1:7;
		  $semanaArray = $this->chcalendario->semana($this->input->post('semana'));
			
		  $whereVendidas = array();
		  $dataCompaniaExpress = array();
		  $semanaActual = "";
		  
		  foreach ($semanaArray as $k=>$j){
		      $fecha = $j[0];
		      $semanaActual = $k;
		      break;
		  }

		  $whereVendidas = array('FechaSysCompania >= ' => $fecha,
							     'IdServicio'           => $typeServicio);

		
		  $objetoCompanias = $this->companiashistoricaactivasmodel->loadRegistrosByWhere($whereVendidas);
		  foreach($objetoCompanias as $compania){
		  		
		  		$servicio = ($compania->getIdServicio() == 1)?"Express":"Venta - Express";
		  		$dataCompania = array();
				$usuario = $this->usuarios->LoadUsuarioById($compania->getIdUsuario());
				$dataCompania['semana']	= $semanaActual;
				$dataCompania['referencia']	= $compania->getNombre();
				$dataCompania['fechaRegistro'] = $compania->getFechaSistemaCompania();
				$dataCompania['servicio'] = $servicio;
				$dataCompania['usuario'] = $usuario->getNombreUsuario();
				
				$dataCompaniaExpress[] = $dataCompania;
		  }
		 					 
		 
		
		  $this->load->view('detalle-indicadores-venta', array("semana" => $this->input->post('semana'),
		                                                       "type"   => $this->input->post('type'),
		                                                       "dataCompaniaExpress" => $dataCompaniaExpress));
	
	}
		
	/**
	 * 
	 * RETORNA UN LISTADO CON LAS 5 COMPANIAS MAS VIEJAS DE LAS ETAPAS
	 * DE EXPRESS, PARTIENDO DESDE SU FECHA DE REGISTRO..
	 * NOTA: no aplica el filtro por fechas
	 */
	public function getOlderCompaniasExpress()
	{
		$page = $this->input->post('page') ? $this->input->post('page') : 1;
		$sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'IdCompania';
		$sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'asc';
		$limit = $this->input->post('rows') ? $this->input->post('rows') : 200;
		
		$start = $limit * $page - $limit;
		
		header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
		header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
		header("Cache-Control: no-cache, must-revalidate" );
		header("Pragma: no-" );
		
		//PREPARO LA DATA PARA LA CONSULTA...
		
		$dataWhere = array('IdServicio'	=>	1);
		$orderBy[] = 'FechaSysCompania';
		$orderBy[] = 'ASC';
		 
		$this->_companias = $this->mcompania->getCompaniasByWhere($dataWhere, false, $orderBy, 5);
		
		$totalRecords = count($this->_companias);
		$totalPages = ceil($totalRecords/$limit);
		if ($page > $totalPages) $page = $totalPages;
		
		$json_output = array(
		'page'		=> $page,
		'total'		=> $totalPages,
		'records'	=> $totalRecords,
		'rows'		=> array());
		
		if($this->_companias != false){
			
			foreach($this->_companias as $objeto){
				
				 $servicios = $this->mservicios->LoadServicioById($objeto->getIdServicio());
			     
			     $usuario = $this->usuarios->LoadUsuarioById($objeto->getIdUsuario());
			     
			     $responsable = $this->mresponsable->LoadEstatusById($objeto->getIdResponsable());
			     
			     $proceso = $this->mprocesos->loadLastProceso($objeto->getIdCompania());
			    	 
			     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $objeto->getIdCompania()));
			    	
				 $procesoFecha = array_reverse($procesoFecha);
				 
			     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
			     
				 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
				 
				 $estatus 	= $this->mestatus->LoadEstatusById($procesos->getIdEstatus());
				 
				 $etapa 	= $this->metapas->LoadEtapaById($objeto->getIdUltimaEtapa());
				 
				 foreach ($procesoFecha as $k){
				 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
				 	     	$fechaProcesoScuenci = $k->getFechaSys();  
				 	     	
				 	  }else{
				 	  	
				 	  	 break;
				 	  }         
				 }
				 
				 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
				
			     $colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
			     
				 $colores_etapa=$colores_array_etapa[0];
				 
				 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
				
				 $dias =  $this->chcalendario->calcularDias($objeto->getFechaSysCompania());
				 
				 $porciento_bruto = ($dias/$servicios->getTiempoServicio())*100;
				 
				  if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
				 	$imagen_etapa = "<img src='http://company24h.com/c24h/public/images/1.png'/>";
				 	
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
				 	$imagen_etapa="<img src='http://company24h.com/c24h/public/images/2.png'/>";
				 	
				 }else{
					$imagen_etapa="<img src='http://company24h.com/c24h/public/images/3.png'/>";
				 }
				 
				 $colores_array_servicio = $this->mmodeloservicios->loadModeloServicios();
				 $colores_servicios = $colores_array_servicio[0];
				
				 if (($porciento_bruto>=$colores_servicios->getVerdeModelo() and $porciento_bruto < $colores_servicios->getAmarilloModelo()) or $porciento_bruto<=0){
					$imagen="<img src='http://company24h.com/c24h/public/images/1.png'/>";
					
				 }elseif ($porciento_bruto >=$colores_servicios->getAmarilloModelo() and $porciento_bruto < $colores_servicios->getRojoModelo()){
					$imagen="<img src='http://company24h.com/c24h/public/images/2.png'/>";
				 }else{
					$imagen="<img src='http://company24h.com/c24h/public/images/3.png'/>";
				 }
				 
				 $arr = $json_output['rows'][] = array(
												          'IdCompania'            => $objeto->getIdCompania(),
												          'NombreCompania'        => '<strong>'.$objeto->getNombreCompania().'</strong>',
												     	  'IdServicio'            => $servicios->getNombreServicio(),
												     	  'cServicio'             => $objeto->getClasificacionS(),
												          'FechaSysCompania'      => $objeto->getFechaSysCompania(),
												     	  'IdEtapa'               => $etapa->GetNombre(),
												     	  'DiasRegistrada'        => intval($dias),
												          'Etapa'                 => $imagen_etapa,
												          'Total'                 => $imagen,
												     	  'User'                  => $usuario->getUsernameUsuario(),
												     	  'Responsable'           => $responsable->getNombre()
											      		);
			}
			$a=json_encode($json_output);
			$a=str_replace('\\','',$a);
			echo $a;
			
		}
	}
	
	/**
	 * 
	 * RETORNA UN GRAFICO DE TIPO Bulb gauge EL CUAL MUESTRA
	 * EL BALANCE EN LA QUE SE ENCUENTRAN LAS COMPANIAS EXPRESS
	 */
	public function getBalanceCompaniasExpress()
	{	
		/*
		 * ID ESTATUS COMPANIAS 24 HORAS:
		 * 1 	=> 	Disponible
		 * 2	=>	Registrada
		 * 3	=>	Reservada	
		 * */
		
		//Cantidad Companias Carpetas Disponibles.	
		$companiasDisponibles = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 1));
		
		//Cantidad Companias Carpetas Registradas.
		$companiasRegistradas = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 2));
		
		//Cantidad Companias Carpetas Reservadas.
		$companiasReservadas = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 3));
		
		//Calculo el 50% de las companias en estatus Reservadas. 
		$porcentajeReservadas = (0.5) * $companiasReservadas;
		$porcentajeReservadas = intval($porcentajeReservadas);
		
		//Balance de las companias 24 HORAS (Companias Carpetas). 
		$balanceCompania = ($companiasDisponibles + $companiasRegistradas + $porcentajeReservadas);
		
		/*Calculo la recomendacion dependiendo del balance de
		 las companias 24 horas.
		 */ 
		$recomendacion = $balanceCompania - self::LIMITE_COMPANIAS_CARPETA;
		
		/*Si la recomendacion es negativa, la multiplico por
		 (-1) para convertirla a positiva
		 
		 nota: Cuando la recomendacion es negativa, quiere decir
		 que el balance de las companias 24 Horas es menor que
		 el limite permitido de dichas companias, el cual es 20.
		*/
		if($recomendacion < 0)
			$recomendacion *= (-1);
		
		$this->_recomendacionBalance = ($balanceCompania < self::LIMITE_COMPANIAS_CARPETA)?"Balance ".$balanceCompania.", Recomendamos registrar ".$recomendacion." compa&ntilde;ias.":"Balance ".$balanceCompania.", NO Recomendamos registrar compa&ntilde;ias.";
		
		$strXML = "<chart decimalPrecision='0' numberSuffix='%25' placeValuesInside='1' is3D='0' showBorder='0' borderColor='638400' bgColor='FFFFFF' useColorNameAsValue='1'>
					<colorRange>
						<color minValue='0' maxValue='15' name='Bajo' code='FF0000'/>
						<color minValue='16' maxValue='22' name='Advertencia' code='FFFF00'/>
						<color minValue='23'  name='Normal' code='99CC00'/>
					</colorRange>
					
					<value>".$balanceCompania."</value>
					</chart>";
		
		return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/Bulb.swf", '' ,$strXML, '', 499, 200, 0, 0);
	}
	
	/**
	 * 
	 * Retorna un grafico tipo BARRA/LINEAL con la efectividad
	 * de las companias tipo EXPRESS por semanas
	 * vs la cantidad de esas companias
	 */
	public function getEfectividadExpressEntreCantidad()
    {	
    	/*$semanaRegistro ESTE ARRAY OBTENDRA LA EFECTIVIDAD Y LA CANTIDAD DE LOS REGITROS
    	  SEPARADOS POR SEMANA
    	*/
    	$semanaRegistro = array();
    	
    	//OBTENGO EL SERVICIO TIPO EXPRESS
    	$servicioExpress = $this->mservicios->LoadServicioById(1);
    	
    	/*$strCat ESTA VARIABLE OBTENDRA TODO EL CODIGO XML
    	  PARA REPRESENTAR EL GRAFICO
    	*/
    	 $strCat = "<categories>";
    
    	/*ESTE FOREACH RECORRE EL TOTAL DE SEMANAS
    	  PARA HACER EL FILTRO DE LAS COMPANIAS 24 HORAS 
    	*/
    	 $porcentaje = array();
    	foreach($this->_semanaArray as $semana => $fecha){
    		
    		$fechaInicial = $fecha[0];
		    $fechaFinal = $fecha[1];
		    $totalRegistrosPorSemana = 0;
		    $valor = 0;
		    
		    /*$semanaDetalle OBTIENE EL NUMERO DE LA SEMANA
		     * ACTUAL EN EL FOREACH.
		     * ESTA VARIABLE SE UTILIIZARA PARA SETEAR EL LABEL
		     * POR CADA ROMPIMIENTO DEL GRAFICO
		     */ 
		    $semanaDetalle = explode("-", $semana);
		    
		    $strCat .= "<category label='" . $semanaDetalle[0]."'/>";
		    
		    /*ESTE ARREGLO OBTIENE EL FILTRO PARA LA BUSQUEDA DE 
		     * LAS COMPANIAS 24 HORAS SEPARADAS POR SEMANA
		    */
		   
		    $where = array('IdServicio'	=> 1, 
		                   'FechaSysCompania >=' => $fechaInicial, 
		                   'FechaSysCompania <=' => $fechaFinal);
		    
		    //ESTA VARIABLE OBTENDRA EL RESULTADO DE LA CONSULTA... 
		    $this->_companias = $this->companiashistoricaactivasmodel->loadRegistrosByWhere($where);
	
			
		   	if(is_array($this->_companias)){
		    	
		    	foreach($this->_companias as $compania){
		    		
		    		$datos = array();
		    		$totalRegistrosPorSemana++;
		    		
		    		//OBTENGO LA FECHA EN LA QUE SE REGISTRO LA COMPANIA 
		    		$fechaInicialCompania = $compania->getFechaUsuarioCompania();
		    		
		    		/*$fechaActual: OBTIENE LA FECHA ACTUAL DEL SISTEMA.
		    		 * UTILIZO ESTA VARIABLE EN CASO DE QUE LA COMPANIA NO SE ENCUENTRA EN
		    		 * ETAPA PARA VENTA, O SEA NO ESTE REGISTRADA EN HISTORICO*/
		    		$fechaActual = date("Y-m-d H:i:s");
		    		
		    		$fechaHistorico = ($compania->getFechaHistoria() == null)?$fechaActual:$compania->getFechaHistoria(); 
		    	
		    		$totalDias = $this->chcalendario->calcularDias($fechaInicialCompania, $fechaHistorico);
		    		$totalDias = intval($totalDias);
		    		
		    		$resultado = ($servicioExpress->getTiempoServicio() - $totalDias);
		    		
		    		$resultado = ($resultado > 0)?1:0;
		    		/*$datos//array: PREPARO LOS DATOS DE CADA COMPANIA
		    		 *PARA MOSTRAR LOS DETALLES*/
		            $datos['referencia'] = $compania->getNombre();
		            $datos['semanaActual'] = $semana;
					$datos['fechaInicial'] = $fechaInicialCompania;
					$datos['fechaVenta'] = $compania->getFechaHistoria();
					$datos['dias'] = $totalDias;
					$datos['resultado'] = $resultado;

		    		if($resultado > 0)
		    			$valor += $resultado;
		    			
		    		$this->_detalles[] = $datos;
		    	}
		    }
		    //AQUI SE CALCULA EL PORCENTAJE QUE MOSTRARA LA BARRA POR SEMANA
		    $valorBarra = ($totalRegistrosPorSemana > 0)?($valor/$totalRegistrosPorSemana):0;
		    $valorBarra = $valorBarra * 100;
		    $valorBarra = number_format($valorBarra, 2);
		   
		    $semanaRegistro[$semana]["companias"] = $valorBarra;
		    $semanaRegistro[$semana]["cantidad"] = $totalRegistrosPorSemana;
			
		    $this->_porcentajeArray[] = $valorBarra;
    	}
    	
    	$strCat .= "</categories>";
    	 
    	$strEfectividad = "<dataset seriesName='Efectividad'>";
		$strCantidad    = "<dataset  seriesName='Cantidad' parentYAxis='S'>";
	
     	foreach ($semanaRegistro as $semana){
     		
		     $strEfectividad  .= "<set value='".$semana["companias"]."'/>";
		     $strCantidad     .= "<set value='".$semana["cantidad"]."'/>";
		}
		
		$strEfectividad  .= "</dataset>";
		$strCantidad  .= "</dataset>";
		
		$strCat .= $strEfectividad;
		$strCat .= $strCantidad;
		
		$strXML  = "<chart palette='1' caption='Efectividad Por Semana Express Vs Cantidad' showLabels='1' showvalues='0'  sYAxisValuesDecimals='2' connectNullData='0' PYAxisName='' SYAxisName=''  numberSuffix='%2525'  numDivLines='4' formatNumberScale='0'>";
		$strXML .= $strCat;
		$strXML .= "</chart>";
		return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/MSColumn3DLineDY.swf", "ChartId54", $strXML, "sACsa", 499,250, 0, 0);
    	
    }
    
	/**
	 * 
	 * RETORNA UN GRAFICO TIPO WIDGET CON EL PROMEDIO DE LAS ULTIMAS 4 SEMANAS MAS RECIENTES...
	 */
	public function getPromedioUltimasSemanas()
	{
		$this->_porcentajeArray = array_reverse($this->_porcentajeArray);
		
		$porcentaje = 0;
		$limiteSemana = 0;
		
		foreach($this->_porcentajeArray as $porciento){
			if($porciento == 0)
				continue;
				
			$porcentaje += $porciento;
			$limiteSemana++;
			
			if($limiteSemana == 4)
				break;
		}
		$promedio = ($porcentaje/4);
        
         $strXML = "<chart bgAlpha='0' bgColor='FFFFFF' lowerLimit='0' upperLimit='100' numberSuffix='%25' showBorder='0' basefontColor='424242' chartTopMargin='25' chartBottomMargin='25' chartLeftMargin='25' chartRightMargin='25' toolTipBgColor='80A905' gaugeFillMix='{dark-10},FFFFFF,{dark-10}' gaugeFillRatio='3'>
		  
                     <colorRange>
                     <color minValue='0' maxValue='45' code='FF654F'/>
                     <color minValue='45' maxValue='80' code='F6BD0F'/>
                     <color minValue='80' maxValue='100' code='8BBA00'/>
                     </colorRange>

                     <dials>
                     	<dial value='".$promedio."' rearExtension='1'/>
                     </dials>
                     <annotations>
                     <annotationGroup id='Grp1' showBelow='1'>
                     <annotation type='rectangle' x='5' y='5' toX='500' toY='250' radius='10' color='ffffff' showBorder='0'/>
                     </annotationGroup>
                     </annotations>
                      
                     <styles>
                     	<definition>
                     		<style name='RectShadow' type='shadow' strength='0'/>
                     		<style name='trendvaluefont' type='font' bold='1' borderColor='f5522f'/>
                     	</definition>
                     	
                     	<application>
                     	   <apply toObject='Grp1' styles='RectShadow'/>
                     	   <apply toObject='Trendvalues' styles='trendvaluefont'/>
                     	</application>
                     	</styles>
                     </chart>";     	 
 		   
		  return $this->chgraficos->renderChartHTML(base_url()."public/swf_charts/AngularGauge.swf", '' ,$strXML, '', 476, 200, 0, 0);
  
	}
	
	/**
	 * 
	 * RETORNA UN GRAFICO TIPO PASTEL CON LA CANTIDAD DE COMPANIAS
	 * EXPRESS 24HORAS CLASIFICADAS POR ESTATUS //DISPONIBLES, REGISTRADAS, RESERVADAS ...
	 */
	public function getCompaniasPorEstatus()
	{
		//Cantidad Companias Carpetas Disponibles.	
		$companiasDisponibles = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 1));
		
		//Cantidad Companias Carpetas Registradas.
		$companiasRegistradas = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 2));
		
		//Cantidad Companias Carpetas Reservadas.
		$companiasReservadas = $this->mcompaniacarpetas->cantidadRegistro(array("IdStatus" => 3));
		$strXML = "<chart caption = 'compa&ntilde;ias 24 Horas por Estatus' palette='2' animation='1' formatNumberScale= '0' showLegend='1' baseFontSize='11' showValues='1' xAxisName=''>";
		
		$strXML .= "<set label = 'Disponibles' value ='" .(int) $companiasDisponibles . "' color='#ADACFF' isSliced='0'/>";
		$strXML .= "<set label = 'Registradas' value ='" .(int) $companiasRegistradas . "' color='99CC00' isSliced='0'/>";
		$strXML .= "<set label = 'Reservadas' value ='" .(int) $companiasReservadas . "' color='#E78BEB' isSliced='0'/>";
		
		$strXML .= "<styles>
			 <definition>

	            <style type='font' name='CaptionFont' color='666666' size='15' />
	
	            <style type='font' name='SubCaptionFont' bold='0' />

       		 </definition>
       		 <application>

	            <apply toObject='caption' styles='CaptionFont' />
	
	            <apply toObject='SubCaption' styles='SubCaptionFont' />

        	</application>
        	
        	</styles>
		";
		$strXML .= "</chart>";
		
		return $this->chgraficos->renderChartHTML (base_url () . "public/swf_charts/Pie3D.swf", "ChartId8", $strXML, "Pizza", 481, 250, false );
	}
	
	public function getExpressCreadasVsVendidas()
	{
		$strTable = "<table style='
								width:100%; height:100px;
								'>
						<thead>
							<tr>
								<th align='left'>Semana:</th>
								<th>2</th>
								<th>5</th>
								<th>10</th>
								<th>16</th>
							</tr>
						</thead>
							<tbody>";
		$strTrRegistradas = "<tr><th align='left'>Registradas:</th>";
		$strTrVendidas = "<tr><th align='left'>Vendidas:</th>";
		
		$arraySemana = array(2,5,10,16);
		
		foreach($arraySemana as $semana){
			$registradas = 0;
			$vendidas = 0;
			$semanaArray = $this->chcalendario->semana($semana);
		
			foreach($semanaArray as $semanaActual => $fecha){
				 
				$whereRegistradas = array('FechaSysCompania >= ' => $fecha[0],
										  'IdServicio' => 1);
				$whereVendidas = array('FechaSysCompania >= ' => $fecha[0],
										  'IdServicio' => 7);
			
		  		$registradas = $this->companiashistoricaactivasmodel->loadRegistrosByWhere($whereRegistradas, true);
				$vendidas = $this->companiashistoricaactivasmodel->loadRegistrosByWhere($whereVendidas, true);
				break;
			}
			$strTrRegistradas .= "<td><a onclick='javascript:mostrarCreadasVsVendidas(\"".$semana."\",\"registradas\")' style='cursor:pointer'>".$registradas."</a></td>";
			$strTrVendidas .= "<td><a onclick='javascript:mostrarCreadasVsVendidas(\"".$semana."\",\"vendidas\")' style='cursor:pointer'>".$vendidas."</a></td>";
	
		}
		$strTrRegistradas .= "</tr>";
		$strTrVendidas .= "</tr>";
		$strTable .= $strTrRegistradas;
		$strTable .= $strTrVendidas;
	
		return $strTable;
	}
	
	public function getPromedioDiasExpress()
	{
	
		$registros = array();
		
		$strCat = "<categories>";
		
		$totalTarget = 0;
		$promedioTarget = 0;
		
		
		$contador = 1;
		
		$this->_semanaArray = $this->chcalendario->semana($this->_semanaActual+self::SEMANAS_OBMITIDAS); 
		
		$limiteSemana = (count($this->_semanaArray)-self::SEMANAS_OBMITIDAS);
		
		foreach($this->_semanaArray as $semana => $fecha){
    		$totalRegistros = 0;
    		$fechaInicial = $fecha[0];
		    $fechaFinal = $fecha[1];
		    
		    $semanaDetalle = explode ( "-", $semana );
			
			$strCat .= "<category label='" . $semanaDetalle [0] . "'/>";
			
			$whereExpress = array('FechaSysCompania >= ' 	=> $fechaInicial,
								  'FechaSysCompania <= '	=> $fechaFinal,
							      'IdServicio'           	=> 1); 
			
			$objetoCompanias = $this->companiashistoricaactivasmodel->loadRegistrosByWhere($whereExpress);
			$diasTotal = 0;
			if(is_array($objetoCompanias)){
				
				foreach($objetoCompanias as $compania){
					
					$totalRegistros++;
					$fechaHistorico = ($compania->getFechaHistoria() == NULL) ? date("Y-m-d H:i:s"):$compania->getFechaHistoria();
					
					$diasConsumidos = $this->chcalendario->calcularDias($compania->getFechaSistemaCompania(),$fechaHistorico);
					$diasTotal += $diasConsumidos;
				}
				
			}
			
			$promedio = ($totalRegistros > 0)?($diasTotal/$totalRegistros):0;
			//$promedio = 25;
			$promedio = round($promedio, 2);
			
			if($promedio < 0){
				$promedio *= (-1); 
			}
			
			$registros[$semana]["promedio"] = $promedio;
			$totalTarget += $promedio;

			if($contador == $limiteSemana)
				break;
				
			$contador++;
	
		}
		$strCat .= "</categories>";
		$strPromedio = "<dataset seriesName='Promedio de Dias' showValues='0'>";
		
		foreach ($registros as $semana ) {
			$strPromedio .= "<set value='" . $semana ["promedio"] . "' />";
			
		}
		$strPromedio .= "</dataset>";
		$strCat .= $strPromedio;
		$promedioTarget = ($totalTarget/$limiteSemana);
		$promedioTarget = number_format($promedioTarget, 2, '.', '');
		
		$strXML = "<chart caption='Promedio de Dias en EXPRESS' lineThickness='1' formatNumberScale='0' anchorRadius='2' divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='1' showAlternateHGridColor='1' alternateHGridColor='CC4400' shadowAlpha='40' labelStep='1' numvdivlines='5' chartRightMargin='35' bgColor='FFFFFF' bgAngle='270' bgAlpha='10,10' alternateHGridAlpha='5'  legendPosition ='RIGHT ' bordercolor='FFFFFF' xAxisName='Semanas' showValues='0' numberPrefix=''>";
		$strTarg = "<trendlines> 
                          <line startValue='$promedioTarget' color='f6bd0f' displayValue='Target' showOnTop='2'/>
                       </trendlines></chart>"; 
		$strXML .= $strCat.$strTarg;
		//$strXML .= "</chart>";
		return $this->chgraficos->renderChartHTML ( base_url () . "public/swf_charts/MSLine.swf", "ChartId6", $strXML, "sACsa", 480, 250, 0, 0 );
	
	}
}
